package ar.com.wholeconsulting.pacc.model.cabezal;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PostLoad;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Transient;

import ar.com.wholeconsulting.pacc.model.Acero;
import ar.com.wholeconsulting.pacc.model.Elemento;
import ar.com.wholeconsulting.pacc.model.MetodoSoldadura;
import ar.com.wholeconsulting.pacc.model.RadiografiaSoldadura;
import ar.com.wholeconsulting.pacc.model.Soldadura;

/**
 * @version 1.0 @created 06-Dic-2011 21:12:34
 */
@Entity
@Table(name = "ABSTRACT_CABEZAL")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class AbstractCabezal extends Elemento {

    /**
     *
     */
    private static final long serialVersionUID = -8405362204184334576L;
    protected Soldadura soldaduraInterna;
    protected RadiografiaSoldadura radiografiaInterna;
    protected Double eficienciaDeJunta;
    @Enumerated(EnumType.STRING)
    protected Soldadura tipoSoldadura;
//    protected String metodoAuxSoldadura;
    @Enumerated(EnumType.STRING)
    protected MetodoSoldadura metodoSoldaduraExterna;
    @Enumerated(EnumType.STRING)
    protected RadiografiaSoldadura radiografiaExterna;
    protected Long tensionAdmisible;
    protected Double espesorDeCalculo;
    protected Double espesorNominal;
    @ManyToOne
    @JoinColumn(name = "ACERO_ID")
    protected Acero acero;

    public AbstractCabezal() {
    }

    public Double getEficienciaDeJunta() {
        return this.eficienciaDeJunta;
    }

    public void setEficienciaDeJunta(Double eficienciaDeJunta) {
        this.eficienciaDeJunta = eficienciaDeJunta;
    }

    public Double getEspesorDeCalculo() {
        return this.espesorDeCalculo;
    }

    public void setEspesorDeCalculo(Double espesorDeCalculo) {
        this.espesorDeCalculo = espesorDeCalculo;
    }

    public MetodoSoldadura getMetodoSoldaduraExterna() {
        return this.metodoSoldaduraExterna;
    }

    public void setMetodoSoldaduraExterna(MetodoSoldadura metodoSoldaduraExterna) {
        this.metodoSoldaduraExterna = metodoSoldaduraExterna;
    }

    public RadiografiaSoldadura getRadiografiaExterna() {
        return this.radiografiaExterna;
    }

    public void setRadiografiaExterna(RadiografiaSoldadura radiografiaExterna) {
        this.radiografiaExterna = radiografiaExterna;
    }

    public RadiografiaSoldadura getRadiografiaInterna() {
        return this.radiografiaInterna;
    }

    public void setRadiografiaInterna(RadiografiaSoldadura radiografiaInterna) {
        this.radiografiaInterna = radiografiaInterna;
    }

    public Soldadura getSoldaduraInterna() {
        return this.soldaduraInterna;
    }

    public void setSoldaduraInterna(Soldadura soldaduraInterna) {
        this.soldaduraInterna = soldaduraInterna;
    }

    public Long getTensionAdmisible() {
        return this.tensionAdmisible;
    }

    public void setTensionAdmisible(Long tensionAdmisible) {
        this.tensionAdmisible = tensionAdmisible;
    }

    public Soldadura getTipoSoldadura() {
        return this.tipoSoldadura;
    }

    public void setTipoSoldadura(Soldadura tipoSoldadura) {
        this.tipoSoldadura = tipoSoldadura;
    }

    public Acero getAcero() {
        return this.acero;
    }

    public void setAcero(Acero acero) {
        this.acero = acero;
    }

    public Double getEspesorNominal() {
        return this.espesorNominal;
    }

    public void setEspesorNominal(Double espesorNominal) {
        this.espesorNominal = espesorNominal;
    }

//    public String getMetodoAuxSoldadura() {
//        return this.metodoAuxSoldadura;
//    }
//
//    public void setMetodoAuxSoldadura(String metodoAuxSoldadura) {
//        this.metodoAuxSoldadura = metodoAuxSoldadura;
//    }
//
//    @PrePersist
//    void saveFields() {
//        if (metodoSoldaduraExterna != null) {
//            this.metodoAuxSoldadura = this.metodoSoldaduraExterna.toString();
//        }
//    }
//
//    @PostLoad
//    void populateFiled() {
//        if (metodoAuxSoldadura != null && !metodoAuxSoldadura.isEmpty()) {
//            this.metodoSoldaduraExterna = MetodoSoldadura.fromString(this.metodoAuxSoldadura);
//        }
//    }
}
